Modern communication networks support large, varied, and growing populations of users and an ever increasing gamut of user services and user applications. The networks span not only global populations and geography but a plethora of methods, devices, infrastructures, and protocols for propagating data, voice, and video content. Messages that not long ago were propagated over relatively small geographic distances and were confined to single networks are now regularly delivered from a source to a destination by a plurality of communication networks that cooperate to deliver the messages often over distances that cross national and international borders. The cooperating networks may be provided by different service providers, operate using different communication protocols, and be based on different physical layer infrastructures.
As the various software and hardware resources that support the networks, configure paths along which network packets propagate in the networks, and provide services mediated by the networks have become more sophisticated, the resources have become fungible and logically abstracted away from their particular physical structures. Resources, such as switches, routers, processors, and computers that communicate with each other over a communication network may be replaced by abstract network resources implemented in software, substantially independent of their tangible structures. The resources may be configured by software to communicate and cooperate with each other as needed to form a network element (NE), which may be addressed and communicated with via the network to implement a particular network task. Such a software constructed entity is conventionally referred to as a “virtual” entity, and the process of constructing such an entity is referred to as “virtualization”. A virtual network entity may function as any of various network elements, and may for example be a virtual router, virtual switch, or virtual firewall. Upon completion of its task the virtual entity may be disassembled and its component resources “returned” and made available to the network to be reconfigured and provide another desired virtual network entity.
Servers that are connected to communication networks to provide data, services and/or applications to network users may also be “virtualized”. Virtual servers may comprise a configuration of resources provided by a plurality of computers that are configured and managed by software referred to as a “hypervisor”, to emulate a physical computational resource, which emulation may be referred to as a virtual machine (VM). A single physical computer may be configured to host a plurality of virtual machines that are controlled by a hypervisor to manage computer hardware resources and provide services for various applications and programs.
The advent and development of virtualization has stimulated and extended software control of networks and development of Software Defined Networking (SDN) tools that enable a centralized network operating system (NOS) to directly configure physical or virtual network elements substantially in real-time to shape network traffic. The OpenFlow protocol is an example of software for provisioning a NOS to define a network by software. Another form of virtualization of network and service functions takes the form of network functions virtualization. The fact that network elements can run as virtual appliances utilizing commercial off the shelf (COTS) hardware provides an efficient way of implementing new virtual networks and services.
To exemplify the complexity of modern services and their networking demands consider a user using a communication device to access a plurality of services via a communication network to which the device is connected. The user communication device may be any device that the user uses to connect to and communicate via a communication network, and may by way of example, be a laptop, desktop computer, workbook, tablet, smartphone, or personal digital assistant (PDA). For each service a different application comprised in or accessed by the communication device may function to communicate with a dedicated physical server or VM that provides the service. The applications supporting the services may simultaneously be engaged in communication sessions with different servers to enable the user to simultaneously participate in a number of different activities. Among the multiplicity of activities that may be enabled by the applications are by way of example: listening in real-time to music streamed from a server; browsing the Internet; accessing and responding to email on a mail server; engaging in instant messaging (chat) conversations; conversing via voice over IP; drafting a document; using a word processor hosted on a cloud-based server; accessing information from a database; and/or employing business applications hosted in an enterprise headquarters or cloud datacenter.
The transmission of information between an application on the user's communication device and the server providing a service desired by the user is mediated by sequences of data packets that are transmitted between the communication device and the server over the network or networks that connect them. The transmitted sequences of data packets, conventionally referred to as packet traffic flow or simply packet flow, may propagate over different paths of network elements, over various wireless and wired communication channels, and network segments to provide an “end-to-end” (E2E) path that connects the user communication device and the server. The E2E path is generally not static and may change over time due to network loading and reconfiguration, even if the user and servers are geographically fixed. Of course the user may be mobile, connecting in turn to various access networks, and applications running on servers may be dynamically migrated to alternative servers as requirements and/or server computational demand fluctuates. The user's communication device and the server are located at terminal points or “endpoints” of the E2E path that connects them and may be referred to as endpoint communication devices, or endpoint devices, optionally modified where appropriate by “user”. The users may also be referred to as “end-users”.
In order to maintain end-user application and service at acceptable levels of performance, a complex set of tools is deployed to monitor, process, and display parameters that characterize network and server operation. Network performance is conventionally measured by Quality of Service (QoS) parameters, which may for example comprise availability, packet loss, and round-trip delay. A QoS parameter is an objective parameter that may measure a feature of packet transport such as packet loss, corruption, or delay over network paths. Server performance is generally measured by objective parameters referred to as key performance indicators, (KPIs). A KPI may for example provide a measure of a real or virtual CPU load or memory utilization. User satisfaction with network performance and operation of an application supported by the network is conventionally measured by a figure of merit referred to as Quality of Experience (QoE). QoE is a subjective measure that typically requires using satisfaction surveys or focus groups to calibrate and normalize user feelings of “like” and “dislike” with regard to objective parameters of network performance.
Network QoS parameters are commonly measured using Performance Monitoring Operations, Administration, and Maintenance tools, such as the Two Way Active Measurement Protocol (TWAMP) [RFC 5357] and the Ethernet OAM (Operations, Administration and Management) suite defined in ITU-T Recommendation Y.1731. Network QoS parameters may be reported from point of measurement back to a central site using protocols such as Cisco NetFlow, IP Flow Information Export (IPFIX) [IETF RFC 5101], and Simple, Network Management Protocol (SNMP) [IETF STD 62]. Datacenter KPIs are collected by the hypervisors monitoring the VMs and are reported using mechanisms such as OpenStack “Horizon” or Amazon “CloudWatch”.